/**
 * 
 */

Ext.define('Task', {
			extend : 'Ext.data.Model',
			fields : [{
						name : 'id'
					}, {
						name : 'recid'
					}, {
						name : 'recname'
					}, {
						name : 'senderid'
					}, {
						name : 'sendername'
					}, {
						name : 'title'
					}, {
						name : 'content'
					}, {
						name : 'status'
					}, {
						name : 'plantime'
					}, {
						name : 'type'
					}, {
						name : 'finishtime'
					}, {
						name : 'finishcontent'
					}, {
						name : 'recename'
					}, {
						name : 'recedept'
					}]
		});
var store = Ext.create('Ext.data.Store', {
			model : 'Task',
			pageSize : 20,
			proxy : {
				type : 'ajax',
				url : 'taskAction!queryPage.action',
				reader : {
					type : 'json',
					root : 'pageList'
				}
			}
		});
function readTitle(data, cell, record, rowIndex, columnIndex, store) {
	var id = record.get('id');
	var title = data;
	var style = 'color:#15428b;font-size: 13px;cursor: pointer;font-weight:bold;text-decoration: underline;font-family:楷体';
	title = '<span style="' + style + '"  data="' + title
			+ '" onclick="openDetail(' + id + ')">' + title + '</span>';
	return title;
}
function openDetail(id) {
	Ext.util.Cookies.set('taskId', id);
	Ext.util.Cookies.set('flag', 'look');
	window.top.Utils.addPage('taskQuery' + id, '任务详情',
			'js/resources/business/task/taskFeedback.js');
}
var statusStore = Ext.create('Ext.data.Store', {
			fields : ['id', 'name'],
			data : [{
						'id' : 2,
						'name' : '待反馈'
					}, {
						'id' : 3,
						'name' : '已反馈'
					}, {
						'id' : 0,
						'name' : '全部'
					}]
		});
var statusCombo = Ext.create('Ext.form.field.ComboBox', {
			store : statusStore,
			fieldLabel : '状态',
			labelWidth : 50,
			width : 130,
			name : 'status',// 控件名称
			displayField : 'name',
			editable : false,
			valueField : 'id',// 实际值
			emptyText : '请选择...',
			queryMode : 'local',
			listeners : {
				select : function(combo, records, eOpts) { // 该处实现自动对store加载
					var proxy = store.getProxy(); // 获取store里面的proxy全部
					var status = null;
					if (records[0].data.id != 0) {
						status = records[0].data.id;
					} else {
						status = 0;
					}
					proxy.extraParams = {
						"status" : status
					};
					store.reload();
				}
			}
		});
var addBtn = {
	xtype : 'button',
	text : '新建任务',
	name : 'add',
	iconCls : 'icon-add',
	// hidden : true,
	handler : function() {
		window.top.Utils.addPage('taskAdd', '任务新建',
				'js/resources/business/task/taskAdd.js');
	}
};
var sendBtn = {
	xtype : 'button',
	text : '发布任务',
	name : 'send',
	iconCls : 'icon-rrss_go',
	// hidden : true,
	handler : function() {
		var selMode = grid.getSelectionModel();
		var model = selMode.getSelection();
		if (model[0]) {
			var ids = [];// 发布多个
			Ext.Array.each(model, function(item) {
						if (item.raw.status != 1) {
							Ext.Msg.alert('提示', '您选择的数据中存在非草稿状态数据，请重新选择！');
							ids = [];
							return false;
						} else {
							ids.push(item.raw.id);
						}
					});
			if (ids.length == 0) {
				return;
			} else {
				Ext.Msg.show({
							title : '确认发布',
							buttons : Ext.MessageBox.OKCANCEL,
							msg : '确定发布选择项?',
							fn : function(btn) {
								if (btn == 'ok') {
									Ext.Ajax.request({
												url : 'taskAction!submit.action?ids='
														+ ids,
												success : function(response) {
													Ext.Msg.show({
																title : '提示',
																msg : '发布成功！',
																buttons : Ext.Msg.OK,
																width : 300,
																fn : function() {
																	store
																			.reload();
																}
															});
												},
												failure : function(response,
														opts) {
												}
											});
								}
							}
						});
			}
		}
	}
};
var editBtn = {
	xtype : 'button',
	text : '修改',
	name : 'edit',
	iconCls : 'icon-edit',
	// hidden : true,
	handler : function() {
		var selMode = grid.getSelectionModel();
		var model = selMode.getSelection();
		if (model.length == 1) {
			var raw = model[0].raw;
			if (raw.status == 1) {
				Ext.util.Cookies.set('taskId', raw.id);
				Ext.util.Cookies.set('flag', 'edit');
				window.top.Utils.addPage('taskEdit' + raw.id, '任务修改',
						'js/resources/business/task/taskAdd.js');
			} else {
				Ext.Msg.alert('提示', '不能修改非草稿信息！');
				return;
			}

		} else if (model.length > 1) {
			Ext.Msg.alert('提示', '只能选择一条修改！');
			return;
		}
	}
};
var feedbackBtn = {
	xtype : 'button',
	text : '反馈',
	name : 'feedback',
	iconCls : 'icon-rrss_go',
	// hidden : true,
	handler : function() {
		var selMode = grid.getSelectionModel();
		var model = selMode.getSelection();
		if (model.length == 1) {
			var raw = model[0].raw;
			if (raw.status != 2) {
				Ext.Msg.alert('提示', '该记录无需反馈!');
				return false;
			}
			Ext.util.Cookies.set('taskId', raw.id);
			Ext.util.Cookies.set('flag', 'feedback');
			window.top.Utils.addPage('taskFeedback' + raw.id, '任务反馈',
					'js/resources/business/task/taskFeedback.js');
		} else {
			Ext.Msg.alert('提示', '请选择一条反馈！');
			return;
		}
	}
};
var deleteBtn = {
	xtype : 'button',
	text : '删除',
	name : 'delete',
	width : 50,
	iconCls : 'icon-delete',
	// hidden : true,
	handler : function() {
		var selMode = grid.getSelectionModel();
		var model = selMode.getSelection();
		if (model[0]) {
			var ids = [];// 删除多个
			Ext.Array.each(model, function(item) {
						if (item.raw.status != 1) {
							Ext.Msg.alert('提示', '您选择的数据中存在非草稿状态数据，请重新选择！');
							ids = [];
							return false;
						} else {
							ids.push(item.raw.id);
						}
					});
			if (ids.length == 0) {
				return;
			} else {
				Ext.Msg.show({
							title : '确认删除',
							buttons : Ext.MessageBox.OKCANCEL,
							msg : '确定删除选择项?',
							fn : function(btn) {
								if (btn == 'ok') {
									Ext.Ajax.request({
												url : 'taskAction!delete.action?ids='
														+ ids,
												success : function(response) {
													Ext.Msg.show({
																title : '提示',
																msg : '删除成功！',
																buttons : Ext.Msg.OK,
																width : 300,
																fn : function() {
																	store
																			.reload();
																}
															});
												},
												failure : function(response,
														opts) {
												}
											});
								}
							}
						});
			}
		}
	}
};

var cols = [{
			text : 'id',
			sortable : true,
			hidden : true,
			dataIndex : 'id'
		}, {
			text : '任务主题',
			sortable : true,
			width : 200,
			renderer : readTitle,
			dataIndex : 'title'
		}, {
			text : '紧急程度',
			sortable : true,
			dataIndex : 'type',
			renderer : function(v) {
				if (v == 1) {
					return '重要紧急';
				}
				if (v == 2) {
					return '重要不紧急';
				}
				if (v == 3) {
					return '紧急不重要';
				}
				if (v == 4) {
					return '不重要不紧急';
				}
			}
		}, {
			text : '任务接受单位',
			sortable : true,
			width : 200,
			dataIndex : 'recedept'
		}, {
			text : '接受人',
			sortable : true,
			width : 200,
			dataIndex : 'recename'
		}, {
			text : '计划完成时间',
			sortable : true,
			// renderer : Ext.util.Format.dateRenderer('Y-m-d'),
			dataIndex : 'plantime'
		}, {
			text : '任务状态',
			sortable : true,
			dataIndex : 'status',
			renderer : function(v) {
				if (v == 1) {
					return '草稿';
				}
				if (v == 2) {
					return '已发布，待反馈';
				}
				if (v == 3) {
					return '已反馈';
				}
				if (v == 4) {
					return '已删除';
				}
			}
		}, {
			text : '实际完成时间',
			sortable : true,
			// renderer : Ext.util.Format.dateRenderer('Y-m-d'),
			dataIndex : 'finishtime'
		}];
var grid = Ext.create('Ext.grid.Panel', {
			enableOverflow : true,
			store : store,
			border : 0,
			selModel : Ext.create('Ext.selection.CheckboxModel'),
			columns : cols,
			stripeRows : false,
			tbar : [addBtn, sendBtn, editBtn, feedbackBtn, deleteBtn, '->', {
						width : 350,
						fieldLabel : '搜索',
						labelWidth : 50,
						emptyText : '请输入任务主题',
						xtype : 'searchfield',
						store : store
					}, statusCombo],
			viewConfig : {
				forceFit : true
				// 让grid的列自动填满grid的整个宽度，不用一列一列的设定宽度。
			},

			bbar : Ext.create('Ext.PagingToolbar', {
						pageSize : 20,// 每页20条
						store : store,
						displayInfo : true,
						plugins : Ext.create('Ext.ux.ProgressBarPager', {})
					})
		});
function ExternalRefresh() {
	store.reload();
};
Ext.onReady(function() {
			Ext.create('Ext.container.Viewport', {
						layout : 'fit',
						items : [grid]
					});
			store.load();
		});
